home *** CD-ROM | disk | FTP | other *** search
/ ...taking it to the Macs! / ...taking it to the Macs!.iso / Extras / ActiveX Mac SDK / ActiveX SDK / Container Common / CContainerManager.cpp < prev    next >
C/C++ Source or Header  |  1997-01-03  |  2KB  |  120 lines

  1. #include "headers.h"
  2. #include <LArray.h>
  3. #include "CContainerManager.h"
  4.  
  5. //
  6. //  CContainerManager::CContainerManager
  7. //
  8. //  Default constructor
  9. //
  10.  
  11. CContainerManager::CContainerManager(void)
  12. {
  13.     // Allocate an array to hold the container items
  14.     mContainers = new LArray( sizeof(void*));
  15. }
  16.  
  17.  
  18. //
  19. //  CContainerManager::~CContainerManager
  20. //
  21. //  Destructor
  22. //
  23.  
  24. CContainerManager::~CContainerManager(void)
  25. {
  26.     delete mContainers;
  27.     
  28. }
  29.  
  30.  
  31.  
  32.  
  33. //
  34. //  CContainerManager::IContainerManager::AddContainer
  35. //
  36. void
  37. CContainerManager::AddContainer(CContainer* inContainer)
  38. {
  39.     mContainers->InsertItemsAt(1, 32000, &inContainer);
  40. }
  41.  
  42.  
  43. //
  44. //  CContainerManager::IContainerManager::RemoveContainer
  45. //
  46.  
  47. void
  48. CContainerManager::RemoveContainer(CContainer* inContainer)
  49. {
  50.     mContainers->Remove(&inContainer);
  51. }
  52.  
  53.  
  54. //
  55. //  CContainerManager::ICollection::GetCount
  56. //
  57.  
  58. unsigned long
  59. CContainerManager::GetCount(void)
  60. {
  61.     return mContainers->GetCount();
  62. }
  63.  
  64.  
  65. //
  66. //  CContainerManager::FetchContainer
  67. //
  68.  
  69. void
  70. CContainerManager::FetchContainer(short Index, CContainer** outContainer)
  71. {
  72.     mContainers->FetchItemAt(Index, outContainer);
  73. }
  74.  
  75.  
  76.  
  77. //
  78. //  CContainerManager::IContainerManager::FindContainer
  79. //
  80.  
  81. CContainer*
  82. CContainerManager::FindContainer(CXSite* inSite, PlatformPort* inHostPort)
  83. {
  84.     CContainer        *Container, *OutContainer = nil;
  85.     short            i, ContainerCount;
  86.  
  87.     // Release each connection point
  88.     for ( i = 1, ContainerCount = mContainers->GetCount(); i <= ContainerCount && !OutContainer; i++)
  89.     {
  90.         mContainers->FetchItemAt(i, &Container);
  91.         
  92.         // if finding by site
  93.         if ( inSite )
  94.         {
  95.             CXSite*    Site;
  96.             short    SiteCount;
  97.             short    j;
  98.  
  99.             for ( j = 1, SiteCount = Container->GetCount(); j <= SiteCount; j++ )
  100.             {
  101.                 Container->FetchSite(j, &Site);
  102.                 
  103.                 // if this is a match, set the outContainer and bail
  104.                 if ( Site == inSite )
  105.                     OutContainer = Container;
  106.             }
  107.         }
  108.         else if ( inHostPort )    // finding by port
  109.         {
  110.             if ( Container->GetPort() == inHostPort )
  111.                 OutContainer = Container;
  112.         }
  113.     }
  114.  
  115.     return OutContainer;
  116. }
  117.  
  118.  
  119.  
  120.